package com.SpringBoot.test_1_27_springbootconfig.Controller;

import com.SpringBoot.test_1_27_springbootconfig.Model.DBType;
import com.SpringBoot.test_1_27_springbootconfig.Model.Student;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.annotation.PostConstruct;

@RestController
public class YmlController {
    @Value("${demo.key1}")
    public String key1;

    @Value("${demo.key2}")
    public String key2;

    @Value("${demo.key3}")
    public Integer key3;

    @RequestMapping("/readYml")
    public String readYml(){
        return key1;
    }

    @Value("${string.str1}")
    public String str1;

    @Value("${string.str2}")
    public String str2;

    @Value("${string.str3}")
    public String str3;

    // Yml 读取对象
    @Autowired  // 先将其交给Spring 管理
    public Student student;

    // Yml 读取集合
    @Autowired
    public DBType dbType;

    // Yml 读取map
    // 放到集合里面了, 不需要改动这个文件

    @PostConstruct   // 初始化注解, 在属性注入完成之后, 就会执行这个方法
    public void init(){
        System.out.println("key1:"+key1);
        System.out.println("key2:"+key2);
        System.out.println("key3:"+key3);
        System.out.println(key3 == null);
        //System.out.println(StringUtils.hasLength(key3));

        System.out.println("str1: "+str1);
        System.out.println("str2: "+str2);
        System.out.println("str3: "+str3);
        // 运行之后,会发现 , str1 和 str2 运行结果一样
        // str3 没有对 \n 进行转义, 所以还是表示成了 \n (换行) 本身的含义

        System.out.println(student);

        System.out.println(dbType);
    }
    // 也就是 在 Tomcat 启动之前会执行这个方法
    // 作用就是 做一些项目,在对外执行服务之前会执行@PostConstruct 这个注解的方法
}
